#pragma once

#include "KnowledgeBaseElement.h"

class KnowledgeBaseMemoryInterface;
typedef Factory < KnowledgeBaseMemoryInterface >::Ptr KnowledgeBaseMemoryInterfacePtr;

class KnowledgeBaseMemoryInterface
{
public:
	virtual ~KnowledgeBaseMemoryInterface () {}
	virtual int ElementsCount () = 0;
	virtual KnowledgeBaseElementInterfacePtr Element ( int index ) = 0;
	virtual void Append ( KnowledgeBaseElementInterfacePtr element ) = 0;
	virtual void AppendTypeRoot ( KnowledgeBaseElementInterfacePtr element ) = 0;
	virtual void AppendValueRoot ( KnowledgeBaseElementInterfacePtr element ) = 0;
	virtual int TypeRootAddress () = 0;
	virtual int ValueRootAddress () = 0;
};
